Computer simulations, such as computer games and other applications that include a virtual environment, often include background scenery to enhance the simulation. It is common to utilize simple color patterns and/or other texture data to represent a terrain or other background. Such background is often repetitively tiled while a simulated character, or other element, moves about relative to the background in the simulation. Typically, these simple backgrounds are only two-dimensional (2D), and are not very realistic. However, some 2D backgrounds have complex textures and may be designed to be computationally efficient in covering a large area in a simulated virtual environment.
To increase the realism of a simulation, three-dimensional (3D) scenery objects are sometimes used instead of, or in addition to, 2D backgrounds. For example, it is common to include 3D buildings, walls, vegetation, and other scenery objects in computer games. To provide even more realism, a well-known or easily recognized scenery object, such as a landmark building, may be mapped to a specific location within the simulated environment corresponding to the location of the real object in the environment. With this technique, some simulations are able to provide very detailed scenery objects, but because of the labor involved, the detail is confined within a relatively limited area. For instance, some automobile racing games include very detailed scenery objects that correspond to real buildings, traffic signs, trees, and other objects along some selected streets of cities in which auto races are held.
However, even with foreseeable increases in processor speeds and storage sizes, it is impractical to define, store, and render a specific scenery object for every corresponding real object over a wide area, such as an entire metropolitan area. The problem becomes even more significant when the simulated environment includes the entire Earth. Thus, in prior art simulated virtual environments, 3D scenery objects are often used to simulate specific landmarks in a few limited areas, while 2D terrain background is typically used in the remaining larger areas of the simulation. For example, as indicated above, it is common to provide 3D simulations of specific landmark buildings in the center of a metropolitan area, and use 2D terrain background in the outskirts of the metropolitan area.
However, it would generally be desirable to provide more realistic 3D scenery everywhere within a simulated environment. One method that has been employed in the prior art is to enhance the 2D terrain background with topographical data, thereby creating the appearance of a 3D terrain, such as mountainous areas. Although an improvement, topographical data typically provides only a smoothed representation of a continuous region, such as uninhabited, hilly areas. Smoothing is not well suited for realistically depicting individual scenery objects, such as buildings, individual trees or other vegetation, and other discrete objects.
Another method used in the prior art simply adds 3D scenery objects that do not correspond to any real objects. Exact replication of a real object is thus not usually necessary, or even possible. In many cases, it is sufficient to provide scenery objects that appear realistic, but do not necessarily represent real objects. For example, it is often sufficient to simulate buildings, vegetation, and other 3D scenery objects in the outskirts of a simulated metropolitan area without replicating those objects in the outskirts of the real metropolitan area. Similarly, where real objects cannot be replicated, such as in games on fictitious worlds, it is necessary to simulate scenery objects independently. For example, vegetation and terrain objects that do not replicate reality can appear realistic in a simulation of dinosaurs, or a simulation of a fictitious planet, even though there is no corresponding real object to reference.
For such cases, some alternatives are available. One alternative is to populate the scenery with objects stored in a library. A variety of library objects can be randomly or programmatically selected and rendered at various locations in the simulation. Another alternative is to dynamically generate scenery objects based on stored parameters, such as building height, width, and depth. The scenery objects can be randomly or programmatically generated and rendered at various locations in the simulation.
However, rendering scenery objects at various locations does not take advantage of the repetitive efficiencies of a 2D background. Instead, each scenery object is typically created in the simulation independent of, or layered atop the 2D background. In particular, a scenery object may be selected from a library or generated from parameters and placed at a specific position independent of an underlying 2D background. Alternatively, a scenery object may be selected from a library or generated from parameters based on the type of 2D background that has been applied. For example, if an urban 2D background is to be used, then more buildings than trees may be selected or generated and placed over the 2D background. The specific locations of objects may be predetermined, determined from a stored pattern, randomly determined, or programmatically determined. However, without further detailed knowledge of the content of the 2D background, unexpected results can occur. For instance, a building might be placed so that it overlies a road in the 2D background.
Existing systems that automatically generate 3D scenery objects also typically do not enable a user to control how the 3D scenery objects are provided. There are scenery editors available, but these editors normally require a user to define a scenery object offline. Offline scenery editors do not enable dynamically changing a scenery object so as to provide a variety of similar scenery objects for use in other locations in a simulated environment while a simulation program is running. Instead of requiring a designer to manually create each object that is placed at a specific position in a simulated environment, it would instead be preferable to enable a user to simply set parameters that control how a variety of scenery objects are dynamically created for use in the simulated environment. (Note that the terms “designer” and “user” are used interchangeably herein.)
It would also be desirable to enable a user to annotate 2D backgrounds to define appropriate locations for dynamically created scenery objects. For example, it would be desirable to annotate aerial photos to indicate where real buildings exist, and let the simulation automatically generate a variety of appropriate realistic buildings that will appear at those annotated locations. This approach is needed to make the scenery appear realistic, because the result will correspond to the actual terrain, but will not require the user to exactly replicate buildings at each location at which they appear in the computer simulation.
An important application for such an approach is in creating realistic terrain over which aircraft fly in a flight simulator program. An initial use of this concept thus occurred as part of Microsoft Corporation's FLIGHT SIMULATOR 2002™ product, which was publicly disclosed in 2001. Subsequently, others appear to have recognized the value of automatically generating a variety of scenery objects that are related to the underlying 2D terrain texture in a simulated environment and have released similar products. For example, a freeware product called TERRAMODELS, produced by Softlang Software and Allen Kriesman, Inc., reportedly generates scenery objects to populate the background landscape in a flight simulator program called FLY II™, which is sold by Terminal Reality, Inc. However, this concept was apparently not used in the prior art.